#pragma once
#include "StdAfx.h"
/*
	This is the base class for anything that is being positioned in the scene.
	They support PhysX actors as controllers and can be extended for any other purpose.
*/
//the desc for creating an actor
class ActorDesc
	: public BaseDesc
{
public:
	ActorDesc()
	{
		Pos=Vel=Acc=Vec3(0,0,0);
		Scale=Vec3(1,1,1);
	}
	Vec3 Pos, Vel, Acc, Scale;
	Rotator Rot;
};

class Actor :
	public Base
{
public:
	Actor(ActorDesc&);
	virtual ~Actor(void);
	Vec3 Pos, Vel, Acc, Scale;
	Rotator Rot;
	Quat quat;
	//getters
	virtual Vec3 GetPos();
	Quat GetRot();
	//setters
	void SetPos(Vec3);
	NxActor* GetPhysics();

	virtual void Update(double dt);
	virtual void React(sptr<Actor>);
protected:
	NxActor *physics;
};

